Subtração Entre Datas e Horas


Para as operações de subtração de Datas e Horas utlizamos a classe Period para diferenças entre objetos LocalDate e a classe Duration para diferenças entre objetos LocalTime e LocalDateTime.


Diferença entre duas datas

import java.time.LocalDate;
import java.time.Period;

public class App {
    public static void main(String[] args) {
        // Definir duas datas usando LocalDate
        LocalDate data1 = LocalDate.of(2024, 1, 1); // 1º de janeiro de 2024
        LocalDate data2 = LocalDate.of(2024, 12, 11); // 11 de dezembro de 2024

        // Calcular a diferença entre as duas datas
        Period periodo = Period.between(data1, data2);

        // Exibir a diferença em anos, meses e dias
        System.out.println("Diferença: " + periodo.getYears() + " anos, " + 
                           periodo.getMonths() + " meses e " + 
                           periodo.getDays() + " dias.");
    }
}

Diferença entre duas datas com horas

import java.time.Duration;
import java.time.LocalDateTime;

public class App {
    public static void main(String[] args) {
        // Definir duas datas/hora usando LocalDateTime
        LocalDateTime data1 = LocalDateTime.of(2024, 12, 10, 10, 30); // 10 de Dezembro de 2024, 10:30
        LocalDateTime data2 = LocalDateTime.of(2024, 12, 11, 15, 45); // 11 de Dezembro de 2024, 15:45

        // Calcular a diferença entre as duas datas
        Duration duration = Duration.between(data1, data2);

        // Obter a diferença em horas
        long horas = duration.toHours();

        // Exibir a diferença
        System.out.println("Diferença em horas: " + horas);
    }
}

Diferença entre duas horas

import java.time.Duration;
import java.time.LocalTime;

public class App {
    public static void main(String[] args) {
        // Definir duas horas usando LocalTime
        LocalTime hora1 = LocalTime.of(10, 30); // 10:30
        LocalTime hora2 = LocalTime.of(15, 45); // 15:45

        // Calcular a diferença entre as duas horas
        Duration duration = Duration.between(hora1, hora2);

        // Obter a diferença em horas
        long horas = duration.toHours();
        
        // Obter a diferença em minutos
        long minutos = duration.toMinutes() % 60;

        // Exibir a diferença
        System.out.println("Diferença em horas: " + horas);
        System.out.println("Diferença em minutos: " + minutos);
    }
}